// Andrew Naplavkov

// http://unicode.org/faq/casemap_charprop.html
// ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt

#ifndef BRIG_UNICODE_UPPER_CASE_HPP
#define BRIG_UNICODE_UPPER_CASE_HPP

#include <algorithm>
#include <cstdint>
#include <iterator>
#include <utility>

namespace brig { namespace unicode {

inline uint32_t upper_case(const uint32_t cp)
{
  using namespace std;
  static const pair<uint32_t, uint32_t> mapping[] =
  {
  make_pair(0x61, 0x41), // LATIN SMALL LETTER A
  make_pair(0x62, 0x42), // LATIN SMALL LETTER B
  make_pair(0x63, 0x43), // LATIN SMALL LETTER C
  make_pair(0x64, 0x44), // LATIN SMALL LETTER D
  make_pair(0x65, 0x45), // LATIN SMALL LETTER E
  make_pair(0x66, 0x46), // LATIN SMALL LETTER F
  make_pair(0x67, 0x47), // LATIN SMALL LETTER G
  make_pair(0x68, 0x48), // LATIN SMALL LETTER H
  make_pair(0x69, 0x49), // LATIN SMALL LETTER I
  make_pair(0x6a, 0x4a), // LATIN SMALL LETTER J
  make_pair(0x6b, 0x4b), // LATIN SMALL LETTER K
  make_pair(0x6c, 0x4c), // LATIN SMALL LETTER L
  make_pair(0x6d, 0x4d), // LATIN SMALL LETTER M
  make_pair(0x6e, 0x4e), // LATIN SMALL LETTER N
  make_pair(0x6f, 0x4f), // LATIN SMALL LETTER O
  make_pair(0x70, 0x50), // LATIN SMALL LETTER P
  make_pair(0x71, 0x51), // LATIN SMALL LETTER Q
  make_pair(0x72, 0x52), // LATIN SMALL LETTER R
  make_pair(0x73, 0x53), // LATIN SMALL LETTER S
  make_pair(0x74, 0x54), // LATIN SMALL LETTER T
  make_pair(0x75, 0x55), // LATIN SMALL LETTER U
  make_pair(0x76, 0x56), // LATIN SMALL LETTER V
  make_pair(0x77, 0x57), // LATIN SMALL LETTER W
  make_pair(0x78, 0x58), // LATIN SMALL LETTER X
  make_pair(0x79, 0x59), // LATIN SMALL LETTER Y
  make_pair(0x7a, 0x5a), // LATIN SMALL LETTER Z
  make_pair(0xb5, 0x39c), // MICRO SIGN
  make_pair(0xe0, 0xc0), // LATIN SMALL LETTER A WITH GRAVE
  make_pair(0xe1, 0xc1), // LATIN SMALL LETTER A WITH ACUTE
  make_pair(0xe2, 0xc2), // LATIN SMALL LETTER A WITH CIRCUMFLEX
  make_pair(0xe3, 0xc3), // LATIN SMALL LETTER A WITH TILDE
  make_pair(0xe4, 0xc4), // LATIN SMALL LETTER A WITH DIAERESIS
  make_pair(0xe5, 0xc5), // LATIN SMALL LETTER A WITH RING ABOVE
  make_pair(0xe6, 0xc6), // LATIN SMALL LETTER AE
  make_pair(0xe7, 0xc7), // LATIN SMALL LETTER C WITH CEDILLA
  make_pair(0xe8, 0xc8), // LATIN SMALL LETTER E WITH GRAVE
  make_pair(0xe9, 0xc9), // LATIN SMALL LETTER E WITH ACUTE
  make_pair(0xea, 0xca), // LATIN SMALL LETTER E WITH CIRCUMFLEX
  make_pair(0xeb, 0xcb), // LATIN SMALL LETTER E WITH DIAERESIS
  make_pair(0xec, 0xcc), // LATIN SMALL LETTER I WITH GRAVE
  make_pair(0xed, 0xcd), // LATIN SMALL LETTER I WITH ACUTE
  make_pair(0xee, 0xce), // LATIN SMALL LETTER I WITH CIRCUMFLEX
  make_pair(0xef, 0xcf), // LATIN SMALL LETTER I WITH DIAERESIS
  make_pair(0xf0, 0xd0), // LATIN SMALL LETTER ETH
  make_pair(0xf1, 0xd1), // LATIN SMALL LETTER N WITH TILDE
  make_pair(0xf2, 0xd2), // LATIN SMALL LETTER O WITH GRAVE
  make_pair(0xf3, 0xd3), // LATIN SMALL LETTER O WITH ACUTE
  make_pair(0xf4, 0xd4), // LATIN SMALL LETTER O WITH CIRCUMFLEX
  make_pair(0xf5, 0xd5), // LATIN SMALL LETTER O WITH TILDE
  make_pair(0xf6, 0xd6), // LATIN SMALL LETTER O WITH DIAERESIS
  make_pair(0xf8, 0xd8), // LATIN SMALL LETTER O WITH STROKE
  make_pair(0xf9, 0xd9), // LATIN SMALL LETTER U WITH GRAVE
  make_pair(0xfa, 0xda), // LATIN SMALL LETTER U WITH ACUTE
  make_pair(0xfb, 0xdb), // LATIN SMALL LETTER U WITH CIRCUMFLEX
  make_pair(0xfc, 0xdc), // LATIN SMALL LETTER U WITH DIAERESIS
  make_pair(0xfd, 0xdd), // LATIN SMALL LETTER Y WITH ACUTE
  make_pair(0xfe, 0xde), // LATIN SMALL LETTER THORN
  make_pair(0xff, 0x178), // LATIN SMALL LETTER Y WITH DIAERESIS
  make_pair(0x101, 0x100), // LATIN SMALL LETTER A WITH MACRON
  make_pair(0x103, 0x102), // LATIN SMALL LETTER A WITH BREVE
  make_pair(0x105, 0x104), // LATIN SMALL LETTER A WITH OGONEK
  make_pair(0x107, 0x106), // LATIN SMALL LETTER C WITH ACUTE
  make_pair(0x109, 0x108), // LATIN SMALL LETTER C WITH CIRCUMFLEX
  make_pair(0x10b, 0x10a), // LATIN SMALL LETTER C WITH DOT ABOVE
  make_pair(0x10d, 0x10c), // LATIN SMALL LETTER C WITH CARON
  make_pair(0x10f, 0x10e), // LATIN SMALL LETTER D WITH CARON
  make_pair(0x111, 0x110), // LATIN SMALL LETTER D WITH STROKE
  make_pair(0x113, 0x112), // LATIN SMALL LETTER E WITH MACRON
  make_pair(0x115, 0x114), // LATIN SMALL LETTER E WITH BREVE
  make_pair(0x117, 0x116), // LATIN SMALL LETTER E WITH DOT ABOVE
  make_pair(0x119, 0x118), // LATIN SMALL LETTER E WITH OGONEK
  make_pair(0x11b, 0x11a), // LATIN SMALL LETTER E WITH CARON
  make_pair(0x11d, 0x11c), // LATIN SMALL LETTER G WITH CIRCUMFLEX
  make_pair(0x11f, 0x11e), // LATIN SMALL LETTER G WITH BREVE
  make_pair(0x121, 0x120), // LATIN SMALL LETTER G WITH DOT ABOVE
  make_pair(0x123, 0x122), // LATIN SMALL LETTER G WITH CEDILLA
  make_pair(0x125, 0x124), // LATIN SMALL LETTER H WITH CIRCUMFLEX
  make_pair(0x127, 0x126), // LATIN SMALL LETTER H WITH STROKE
  make_pair(0x129, 0x128), // LATIN SMALL LETTER I WITH TILDE
  make_pair(0x12b, 0x12a), // LATIN SMALL LETTER I WITH MACRON
  make_pair(0x12d, 0x12c), // LATIN SMALL LETTER I WITH BREVE
  make_pair(0x12f, 0x12e), // LATIN SMALL LETTER I WITH OGONEK
  make_pair(0x131, 0x49), // LATIN SMALL LETTER DOTLESS I
  make_pair(0x133, 0x132), // LATIN SMALL LIGATURE IJ
  make_pair(0x135, 0x134), // LATIN SMALL LETTER J WITH CIRCUMFLEX
  make_pair(0x137, 0x136), // LATIN SMALL LETTER K WITH CEDILLA
  make_pair(0x13a, 0x139), // LATIN SMALL LETTER L WITH ACUTE
  make_pair(0x13c, 0x13b), // LATIN SMALL LETTER L WITH CEDILLA
  make_pair(0x13e, 0x13d), // LATIN SMALL LETTER L WITH CARON
  make_pair(0x140, 0x13f), // LATIN SMALL LETTER L WITH MIDDLE DOT
  make_pair(0x142, 0x141), // LATIN SMALL LETTER L WITH STROKE
  make_pair(0x144, 0x143), // LATIN SMALL LETTER N WITH ACUTE
  make_pair(0x146, 0x145), // LATIN SMALL LETTER N WITH CEDILLA
  make_pair(0x148, 0x147), // LATIN SMALL LETTER N WITH CARON
  make_pair(0x14b, 0x14a), // LATIN SMALL LETTER ENG
  make_pair(0x14d, 0x14c), // LATIN SMALL LETTER O WITH MACRON
  make_pair(0x14f, 0x14e), // LATIN SMALL LETTER O WITH BREVE
  make_pair(0x151, 0x150), // LATIN SMALL LETTER O WITH DOUBLE ACUTE
  make_pair(0x153, 0x152), // LATIN SMALL LIGATURE OE
  make_pair(0x155, 0x154), // LATIN SMALL LETTER R WITH ACUTE
  make_pair(0x157, 0x156), // LATIN SMALL LETTER R WITH CEDILLA
  make_pair(0x159, 0x158), // LATIN SMALL LETTER R WITH CARON
  make_pair(0x15b, 0x15a), // LATIN SMALL LETTER S WITH ACUTE
  make_pair(0x15d, 0x15c), // LATIN SMALL LETTER S WITH CIRCUMFLEX
  make_pair(0x15f, 0x15e), // LATIN SMALL LETTER S WITH CEDILLA
  make_pair(0x161, 0x160), // LATIN SMALL LETTER S WITH CARON
  make_pair(0x163, 0x162), // LATIN SMALL LETTER T WITH CEDILLA
  make_pair(0x165, 0x164), // LATIN SMALL LETTER T WITH CARON
  make_pair(0x167, 0x166), // LATIN SMALL LETTER T WITH STROKE
  make_pair(0x169, 0x168), // LATIN SMALL LETTER U WITH TILDE
  make_pair(0x16b, 0x16a), // LATIN SMALL LETTER U WITH MACRON
  make_pair(0x16d, 0x16c), // LATIN SMALL LETTER U WITH BREVE
  make_pair(0x16f, 0x16e), // LATIN SMALL LETTER U WITH RING ABOVE
  make_pair(0x171, 0x170), // LATIN SMALL LETTER U WITH DOUBLE ACUTE
  make_pair(0x173, 0x172), // LATIN SMALL LETTER U WITH OGONEK
  make_pair(0x175, 0x174), // LATIN SMALL LETTER W WITH CIRCUMFLEX
  make_pair(0x177, 0x176), // LATIN SMALL LETTER Y WITH CIRCUMFLEX
  make_pair(0x17a, 0x179), // LATIN SMALL LETTER Z WITH ACUTE
  make_pair(0x17c, 0x17b), // LATIN SMALL LETTER Z WITH DOT ABOVE
  make_pair(0x17e, 0x17d), // LATIN SMALL LETTER Z WITH CARON
  make_pair(0x17f, 0x53), // LATIN SMALL LETTER LONG S
  make_pair(0x180, 0x243), // LATIN SMALL LETTER B WITH STROKE
  make_pair(0x183, 0x182), // LATIN SMALL LETTER B WITH TOPBAR
  make_pair(0x185, 0x184), // LATIN SMALL LETTER TONE SIX
  make_pair(0x188, 0x187), // LATIN SMALL LETTER C WITH HOOK
  make_pair(0x18c, 0x18b), // LATIN SMALL LETTER D WITH TOPBAR
  make_pair(0x192, 0x191), // LATIN SMALL LETTER F WITH HOOK
  make_pair(0x195, 0x1f6), // LATIN SMALL LETTER HV
  make_pair(0x199, 0x198), // LATIN SMALL LETTER K WITH HOOK
  make_pair(0x19a, 0x23d), // LATIN SMALL LETTER L WITH BAR
  make_pair(0x19e, 0x220), // LATIN SMALL LETTER N WITH LONG RIGHT LEG
  make_pair(0x1a1, 0x1a0), // LATIN SMALL LETTER O WITH HORN
  make_pair(0x1a3, 0x1a2), // LATIN SMALL LETTER OI
  make_pair(0x1a5, 0x1a4), // LATIN SMALL LETTER P WITH HOOK
  make_pair(0x1a8, 0x1a7), // LATIN SMALL LETTER TONE TWO
  make_pair(0x1ad, 0x1ac), // LATIN SMALL LETTER T WITH HOOK
  make_pair(0x1b0, 0x1af), // LATIN SMALL LETTER U WITH HORN
  make_pair(0x1b4, 0x1b3), // LATIN SMALL LETTER Y WITH HOOK
  make_pair(0x1b6, 0x1b5), // LATIN SMALL LETTER Z WITH STROKE
  make_pair(0x1b9, 0x1b8), // LATIN SMALL LETTER EZH REVERSED
  make_pair(0x1bd, 0x1bc), // LATIN SMALL LETTER TONE FIVE
  make_pair(0x1bf, 0x1f7), // LATIN LETTER WYNN
  make_pair(0x1c5, 0x1c4), // LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
  make_pair(0x1c6, 0x1c4), // LATIN SMALL LETTER DZ WITH CARON
  make_pair(0x1c8, 0x1c7), // LATIN CAPITAL LETTER L WITH SMALL LETTER J
  make_pair(0x1c9, 0x1c7), // LATIN SMALL LETTER LJ
  make_pair(0x1cb, 0x1ca), // LATIN CAPITAL LETTER N WITH SMALL LETTER J
  make_pair(0x1cc, 0x1ca), // LATIN SMALL LETTER NJ
  make_pair(0x1ce, 0x1cd), // LATIN SMALL LETTER A WITH CARON
  make_pair(0x1d0, 0x1cf), // LATIN SMALL LETTER I WITH CARON
  make_pair(0x1d2, 0x1d1), // LATIN SMALL LETTER O WITH CARON
  make_pair(0x1d4, 0x1d3), // LATIN SMALL LETTER U WITH CARON
  make_pair(0x1d6, 0x1d5), // LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
  make_pair(0x1d8, 0x1d7), // LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
  make_pair(0x1da, 0x1d9), // LATIN SMALL LETTER U WITH DIAERESIS AND CARON
  make_pair(0x1dc, 0x1db), // LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
  make_pair(0x1dd, 0x18e), // LATIN SMALL LETTER TURNED E
  make_pair(0x1df, 0x1de), // LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
  make_pair(0x1e1, 0x1e0), // LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
  make_pair(0x1e3, 0x1e2), // LATIN SMALL LETTER AE WITH MACRON
  make_pair(0x1e5, 0x1e4), // LATIN SMALL LETTER G WITH STROKE
  make_pair(0x1e7, 0x1e6), // LATIN SMALL LETTER G WITH CARON
  make_pair(0x1e9, 0x1e8), // LATIN SMALL LETTER K WITH CARON
  make_pair(0x1eb, 0x1ea), // LATIN SMALL LETTER O WITH OGONEK
  make_pair(0x1ed, 0x1ec), // LATIN SMALL LETTER O WITH OGONEK AND MACRON
  make_pair(0x1ef, 0x1ee), // LATIN SMALL LETTER EZH WITH CARON
  make_pair(0x1f2, 0x1f1), // LATIN CAPITAL LETTER D WITH SMALL LETTER Z
  make_pair(0x1f3, 0x1f1), // LATIN SMALL LETTER DZ
  make_pair(0x1f5, 0x1f4), // LATIN SMALL LETTER G WITH ACUTE
  make_pair(0x1f9, 0x1f8), // LATIN SMALL LETTER N WITH GRAVE
  make_pair(0x1fb, 0x1fa), // LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
  make_pair(0x1fd, 0x1fc), // LATIN SMALL LETTER AE WITH ACUTE
  make_pair(0x1ff, 0x1fe), // LATIN SMALL LETTER O WITH STROKE AND ACUTE
  make_pair(0x201, 0x200), // LATIN SMALL LETTER A WITH DOUBLE GRAVE
  make_pair(0x203, 0x202), // LATIN SMALL LETTER A WITH INVERTED BREVE
  make_pair(0x205, 0x204), // LATIN SMALL LETTER E WITH DOUBLE GRAVE
  make_pair(0x207, 0x206), // LATIN SMALL LETTER E WITH INVERTED BREVE
  make_pair(0x209, 0x208), // LATIN SMALL LETTER I WITH DOUBLE GRAVE
  make_pair(0x20b, 0x20a), // LATIN SMALL LETTER I WITH INVERTED BREVE
  make_pair(0x20d, 0x20c), // LATIN SMALL LETTER O WITH DOUBLE GRAVE
  make_pair(0x20f, 0x20e), // LATIN SMALL LETTER O WITH INVERTED BREVE
  make_pair(0x211, 0x210), // LATIN SMALL LETTER R WITH DOUBLE GRAVE
  make_pair(0x213, 0x212), // LATIN SMALL LETTER R WITH INVERTED BREVE
  make_pair(0x215, 0x214), // LATIN SMALL LETTER U WITH DOUBLE GRAVE
  make_pair(0x217, 0x216), // LATIN SMALL LETTER U WITH INVERTED BREVE
  make_pair(0x219, 0x218), // LATIN SMALL LETTER S WITH COMMA BELOW
  make_pair(0x21b, 0x21a), // LATIN SMALL LETTER T WITH COMMA BELOW
  make_pair(0x21d, 0x21c), // LATIN SMALL LETTER YOGH
  make_pair(0x21f, 0x21e), // LATIN SMALL LETTER H WITH CARON
  make_pair(0x223, 0x222), // LATIN SMALL LETTER OU
  make_pair(0x225, 0x224), // LATIN SMALL LETTER Z WITH HOOK
  make_pair(0x227, 0x226), // LATIN SMALL LETTER A WITH DOT ABOVE
  make_pair(0x229, 0x228), // LATIN SMALL LETTER E WITH CEDILLA
  make_pair(0x22b, 0x22a), // LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
  make_pair(0x22d, 0x22c), // LATIN SMALL LETTER O WITH TILDE AND MACRON
  make_pair(0x22f, 0x22e), // LATIN SMALL LETTER O WITH DOT ABOVE
  make_pair(0x231, 0x230), // LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
  make_pair(0x233, 0x232), // LATIN SMALL LETTER Y WITH MACRON
  make_pair(0x23c, 0x23b), // LATIN SMALL LETTER C WITH STROKE
  make_pair(0x23f, 0x2c7e), // LATIN SMALL LETTER S WITH SWASH TAIL
  make_pair(0x240, 0x2c7f), // LATIN SMALL LETTER Z WITH SWASH TAIL
  make_pair(0x242, 0x241), // LATIN SMALL LETTER GLOTTAL STOP
  make_pair(0x247, 0x246), // LATIN SMALL LETTER E WITH STROKE
  make_pair(0x249, 0x248), // LATIN SMALL LETTER J WITH STROKE
  make_pair(0x24b, 0x24a), // LATIN SMALL LETTER Q WITH HOOK TAIL
  make_pair(0x24d, 0x24c), // LATIN SMALL LETTER R WITH STROKE
  make_pair(0x24f, 0x24e), // LATIN SMALL LETTER Y WITH STROKE
  make_pair(0x250, 0x2c6f), // LATIN SMALL LETTER TURNED A
  make_pair(0x251, 0x2c6d), // LATIN SMALL LETTER ALPHA
  make_pair(0x252, 0x2c70), // LATIN SMALL LETTER TURNED ALPHA
  make_pair(0x253, 0x181), // LATIN SMALL LETTER B WITH HOOK
  make_pair(0x254, 0x186), // LATIN SMALL LETTER OPEN O
  make_pair(0x256, 0x189), // LATIN SMALL LETTER D WITH TAIL
  make_pair(0x257, 0x18a), // LATIN SMALL LETTER D WITH HOOK
  make_pair(0x259, 0x18f), // LATIN SMALL LETTER SCHWA
  make_pair(0x25b, 0x190), // LATIN SMALL LETTER OPEN E
  make_pair(0x260, 0x193), // LATIN SMALL LETTER G WITH HOOK
  make_pair(0x263, 0x194), // LATIN SMALL LETTER GAMMA
  make_pair(0x265, 0xa78d), // LATIN SMALL LETTER TURNED H
  make_pair(0x266, 0xa7aa), // LATIN SMALL LETTER H WITH HOOK
  make_pair(0x268, 0x197), // LATIN SMALL LETTER I WITH STROKE
  make_pair(0x269, 0x196), // LATIN SMALL LETTER IOTA
  make_pair(0x26b, 0x2c62), // LATIN SMALL LETTER L WITH MIDDLE TILDE
  make_pair(0x26f, 0x19c), // LATIN SMALL LETTER TURNED M
  make_pair(0x271, 0x2c6e), // LATIN SMALL LETTER M WITH HOOK
  make_pair(0x272, 0x19d), // LATIN SMALL LETTER N WITH LEFT HOOK
  make_pair(0x275, 0x19f), // LATIN SMALL LETTER BARRED O
  make_pair(0x27d, 0x2c64), // LATIN SMALL LETTER R WITH TAIL
  make_pair(0x280, 0x1a6), // LATIN LETTER SMALL CAPITAL R
  make_pair(0x283, 0x1a9), // LATIN SMALL LETTER ESH
  make_pair(0x288, 0x1ae), // LATIN SMALL LETTER T WITH RETROFLEX HOOK
  make_pair(0x289, 0x244), // LATIN SMALL LETTER U BAR
  make_pair(0x28a, 0x1b1), // LATIN SMALL LETTER UPSILON
  make_pair(0x28b, 0x1b2), // LATIN SMALL LETTER V WITH HOOK
  make_pair(0x28c, 0x245), // LATIN SMALL LETTER TURNED V
  make_pair(0x292, 0x1b7), // LATIN SMALL LETTER EZH
  make_pair(0x345, 0x399), // COMBINING GREEK YPOGEGRAMMENI
  make_pair(0x371, 0x370), // GREEK SMALL LETTER HETA
  make_pair(0x373, 0x372), // GREEK SMALL LETTER ARCHAIC SAMPI
  make_pair(0x377, 0x376), // GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
  make_pair(0x37b, 0x3fd), // GREEK SMALL REVERSED LUNATE SIGMA SYMBOL
  make_pair(0x37c, 0x3fe), // GREEK SMALL DOTTED LUNATE SIGMA SYMBOL
  make_pair(0x37d, 0x3ff), // GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
  make_pair(0x3ac, 0x386), // GREEK SMALL LETTER ALPHA WITH TONOS
  make_pair(0x3ad, 0x388), // GREEK SMALL LETTER EPSILON WITH TONOS
  make_pair(0x3ae, 0x389), // GREEK SMALL LETTER ETA WITH TONOS
  make_pair(0x3af, 0x38a), // GREEK SMALL LETTER IOTA WITH TONOS
  make_pair(0x3b1, 0x391), // GREEK SMALL LETTER ALPHA
  make_pair(0x3b2, 0x392), // GREEK SMALL LETTER BETA
  make_pair(0x3b3, 0x393), // GREEK SMALL LETTER GAMMA
  make_pair(0x3b4, 0x394), // GREEK SMALL LETTER DELTA
  make_pair(0x3b5, 0x395), // GREEK SMALL LETTER EPSILON
  make_pair(0x3b6, 0x396), // GREEK SMALL LETTER ZETA
  make_pair(0x3b7, 0x397), // GREEK SMALL LETTER ETA
  make_pair(0x3b8, 0x398), // GREEK SMALL LETTER THETA
  make_pair(0x3b9, 0x399), // GREEK SMALL LETTER IOTA
  make_pair(0x3ba, 0x39a), // GREEK SMALL LETTER KAPPA
  make_pair(0x3bb, 0x39b), // GREEK SMALL LETTER LAMDA
  make_pair(0x3bc, 0x39c), // GREEK SMALL LETTER MU
  make_pair(0x3bd, 0x39d), // GREEK SMALL LETTER NU
  make_pair(0x3be, 0x39e), // GREEK SMALL LETTER XI
  make_pair(0x3bf, 0x39f), // GREEK SMALL LETTER OMICRON
  make_pair(0x3c0, 0x3a0), // GREEK SMALL LETTER PI
  make_pair(0x3c1, 0x3a1), // GREEK SMALL LETTER RHO
  make_pair(0x3c2, 0x3a3), // GREEK SMALL LETTER FINAL SIGMA
  make_pair(0x3c3, 0x3a3), // GREEK SMALL LETTER SIGMA
  make_pair(0x3c4, 0x3a4), // GREEK SMALL LETTER TAU
  make_pair(0x3c5, 0x3a5), // GREEK SMALL LETTER UPSILON
  make_pair(0x3c6, 0x3a6), // GREEK SMALL LETTER PHI
  make_pair(0x3c7, 0x3a7), // GREEK SMALL LETTER CHI
  make_pair(0x3c8, 0x3a8), // GREEK SMALL LETTER PSI
  make_pair(0x3c9, 0x3a9), // GREEK SMALL LETTER OMEGA
  make_pair(0x3ca, 0x3aa), // GREEK SMALL LETTER IOTA WITH DIALYTIKA
  make_pair(0x3cb, 0x3ab), // GREEK SMALL LETTER UPSILON WITH DIALYTIKA
  make_pair(0x3cc, 0x38c), // GREEK SMALL LETTER OMICRON WITH TONOS
  make_pair(0x3cd, 0x38e), // GREEK SMALL LETTER UPSILON WITH TONOS
  make_pair(0x3ce, 0x38f), // GREEK SMALL LETTER OMEGA WITH TONOS
  make_pair(0x3d0, 0x392), // GREEK BETA SYMBOL
  make_pair(0x3d1, 0x398), // GREEK THETA SYMBOL
  make_pair(0x3d5, 0x3a6), // GREEK PHI SYMBOL
  make_pair(0x3d6, 0x3a0), // GREEK PI SYMBOL
  make_pair(0x3d7, 0x3cf), // GREEK KAI SYMBOL
  make_pair(0x3d9, 0x3d8), // GREEK SMALL LETTER ARCHAIC KOPPA
  make_pair(0x3db, 0x3da), // GREEK SMALL LETTER STIGMA
  make_pair(0x3dd, 0x3dc), // GREEK SMALL LETTER DIGAMMA
  make_pair(0x3df, 0x3de), // GREEK SMALL LETTER KOPPA
  make_pair(0x3e1, 0x3e0), // GREEK SMALL LETTER SAMPI
  make_pair(0x3e3, 0x3e2), // COPTIC SMALL LETTER SHEI
  make_pair(0x3e5, 0x3e4), // COPTIC SMALL LETTER FEI
  make_pair(0x3e7, 0x3e6), // COPTIC SMALL LETTER KHEI
  make_pair(0x3e9, 0x3e8), // COPTIC SMALL LETTER HORI
  make_pair(0x3eb, 0x3ea), // COPTIC SMALL LETTER GANGIA
  make_pair(0x3ed, 0x3ec), // COPTIC SMALL LETTER SHIMA
  make_pair(0x3ef, 0x3ee), // COPTIC SMALL LETTER DEI
  make_pair(0x3f0, 0x39a), // GREEK KAPPA SYMBOL
  make_pair(0x3f1, 0x3a1), // GREEK RHO SYMBOL
  make_pair(0x3f2, 0x3f9), // GREEK LUNATE SIGMA SYMBOL
  make_pair(0x3f5, 0x395), // GREEK LUNATE EPSILON SYMBOL
  make_pair(0x3f8, 0x3f7), // GREEK SMALL LETTER SHO
  make_pair(0x3fb, 0x3fa), // GREEK SMALL LETTER SAN
  make_pair(0x430, 0x410), // CYRILLIC SMALL LETTER A
  make_pair(0x431, 0x411), // CYRILLIC SMALL LETTER BE
  make_pair(0x432, 0x412), // CYRILLIC SMALL LETTER VE
  make_pair(0x433, 0x413), // CYRILLIC SMALL LETTER GHE
  make_pair(0x434, 0x414), // CYRILLIC SMALL LETTER DE
  make_pair(0x435, 0x415), // CYRILLIC SMALL LETTER IE
  make_pair(0x436, 0x416), // CYRILLIC SMALL LETTER ZHE
  make_pair(0x437, 0x417), // CYRILLIC SMALL LETTER ZE
  make_pair(0x438, 0x418), // CYRILLIC SMALL LETTER I
  make_pair(0x439, 0x419), // CYRILLIC SMALL LETTER SHORT I
  make_pair(0x43a, 0x41a), // CYRILLIC SMALL LETTER KA
  make_pair(0x43b, 0x41b), // CYRILLIC SMALL LETTER EL
  make_pair(0x43c, 0x41c), // CYRILLIC SMALL LETTER EM
  make_pair(0x43d, 0x41d), // CYRILLIC SMALL LETTER EN
  make_pair(0x43e, 0x41e), // CYRILLIC SMALL LETTER O
  make_pair(0x43f, 0x41f), // CYRILLIC SMALL LETTER PE
  make_pair(0x440, 0x420), // CYRILLIC SMALL LETTER ER
  make_pair(0x441, 0x421), // CYRILLIC SMALL LETTER ES
  make_pair(0x442, 0x422), // CYRILLIC SMALL LETTER TE
  make_pair(0x443, 0x423), // CYRILLIC SMALL LETTER U
  make_pair(0x444, 0x424), // CYRILLIC SMALL LETTER EF
  make_pair(0x445, 0x425), // CYRILLIC SMALL LETTER HA
  make_pair(0x446, 0x426), // CYRILLIC SMALL LETTER TSE
  make_pair(0x447, 0x427), // CYRILLIC SMALL LETTER CHE
  make_pair(0x448, 0x428), // CYRILLIC SMALL LETTER SHA
  make_pair(0x449, 0x429), // CYRILLIC SMALL LETTER SHCHA
  make_pair(0x44a, 0x42a), // CYRILLIC SMALL LETTER HARD SIGN
  make_pair(0x44b, 0x42b), // CYRILLIC SMALL LETTER YERU
  make_pair(0x44c, 0x42c), // CYRILLIC SMALL LETTER SOFT SIGN
  make_pair(0x44d, 0x42d), // CYRILLIC SMALL LETTER E
  make_pair(0x44e, 0x42e), // CYRILLIC SMALL LETTER YU
  make_pair(0x44f, 0x42f), // CYRILLIC SMALL LETTER YA
  make_pair(0x450, 0x400), // CYRILLIC SMALL LETTER IE WITH GRAVE
  make_pair(0x451, 0x401), // CYRILLIC SMALL LETTER IO
  make_pair(0x452, 0x402), // CYRILLIC SMALL LETTER DJE
  make_pair(0x453, 0x403), // CYRILLIC SMALL LETTER GJE
  make_pair(0x454, 0x404), // CYRILLIC SMALL LETTER UKRAINIAN IE
  make_pair(0x455, 0x405), // CYRILLIC SMALL LETTER DZE
  make_pair(0x456, 0x406), // CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
  make_pair(0x457, 0x407), // CYRILLIC SMALL LETTER YI
  make_pair(0x458, 0x408), // CYRILLIC SMALL LETTER JE
  make_pair(0x459, 0x409), // CYRILLIC SMALL LETTER LJE
  make_pair(0x45a, 0x40a), // CYRILLIC SMALL LETTER NJE
  make_pair(0x45b, 0x40b), // CYRILLIC SMALL LETTER TSHE
  make_pair(0x45c, 0x40c), // CYRILLIC SMALL LETTER KJE
  make_pair(0x45d, 0x40d), // CYRILLIC SMALL LETTER I WITH GRAVE
  make_pair(0x45e, 0x40e), // CYRILLIC SMALL LETTER SHORT U
  make_pair(0x45f, 0x40f), // CYRILLIC SMALL LETTER DZHE
  make_pair(0x461, 0x460), // CYRILLIC SMALL LETTER OMEGA
  make_pair(0x463, 0x462), // CYRILLIC SMALL LETTER YAT
  make_pair(0x465, 0x464), // CYRILLIC SMALL LETTER IOTIFIED E
  make_pair(0x467, 0x466), // CYRILLIC SMALL LETTER LITTLE YUS
  make_pair(0x469, 0x468), // CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
  make_pair(0x46b, 0x46a), // CYRILLIC SMALL LETTER BIG YUS
  make_pair(0x46d, 0x46c), // CYRILLIC SMALL LETTER IOTIFIED BIG YUS
  make_pair(0x46f, 0x46e), // CYRILLIC SMALL LETTER KSI
  make_pair(0x471, 0x470), // CYRILLIC SMALL LETTER PSI
  make_pair(0x473, 0x472), // CYRILLIC SMALL LETTER FITA
  make_pair(0x475, 0x474), // CYRILLIC SMALL LETTER IZHITSA
  make_pair(0x477, 0x476), // CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
  make_pair(0x479, 0x478), // CYRILLIC SMALL LETTER UK
  make_pair(0x47b, 0x47a), // CYRILLIC SMALL LETTER ROUND OMEGA
  make_pair(0x47d, 0x47c), // CYRILLIC SMALL LETTER OMEGA WITH TITLO
  make_pair(0x47f, 0x47e), // CYRILLIC SMALL LETTER OT
  make_pair(0x481, 0x480), // CYRILLIC SMALL LETTER KOPPA
  make_pair(0x48b, 0x48a), // CYRILLIC SMALL LETTER SHORT I WITH TAIL
  make_pair(0x48d, 0x48c), // CYRILLIC SMALL LETTER SEMISOFT SIGN
  make_pair(0x48f, 0x48e), // CYRILLIC SMALL LETTER ER WITH TICK
  make_pair(0x491, 0x490), // CYRILLIC SMALL LETTER GHE WITH UPTURN
  make_pair(0x493, 0x492), // CYRILLIC SMALL LETTER GHE WITH STROKE
  make_pair(0x495, 0x494), // CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
  make_pair(0x497, 0x496), // CYRILLIC SMALL LETTER ZHE WITH DESCENDER
  make_pair(0x499, 0x498), // CYRILLIC SMALL LETTER ZE WITH DESCENDER
  make_pair(0x49b, 0x49a), // CYRILLIC SMALL LETTER KA WITH DESCENDER
  make_pair(0x49d, 0x49c), // CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
  make_pair(0x49f, 0x49e), // CYRILLIC SMALL LETTER KA WITH STROKE
  make_pair(0x4a1, 0x4a0), // CYRILLIC SMALL LETTER BASHKIR KA
  make_pair(0x4a3, 0x4a2), // CYRILLIC SMALL LETTER EN WITH DESCENDER
  make_pair(0x4a5, 0x4a4), // CYRILLIC SMALL LIGATURE EN GHE
  make_pair(0x4a7, 0x4a6), // CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
  make_pair(0x4a9, 0x4a8), // CYRILLIC SMALL LETTER ABKHASIAN HA
  make_pair(0x4ab, 0x4aa), // CYRILLIC SMALL LETTER ES WITH DESCENDER
  make_pair(0x4ad, 0x4ac), // CYRILLIC SMALL LETTER TE WITH DESCENDER
  make_pair(0x4af, 0x4ae), // CYRILLIC SMALL LETTER STRAIGHT U
  make_pair(0x4b1, 0x4b0), // CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
  make_pair(0x4b3, 0x4b2), // CYRILLIC SMALL LETTER HA WITH DESCENDER
  make_pair(0x4b5, 0x4b4), // CYRILLIC SMALL LIGATURE TE TSE
  make_pair(0x4b7, 0x4b6), // CYRILLIC SMALL LETTER CHE WITH DESCENDER
  make_pair(0x4b9, 0x4b8), // CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
  make_pair(0x4bb, 0x4ba), // CYRILLIC SMALL LETTER SHHA
  make_pair(0x4bd, 0x4bc), // CYRILLIC SMALL LETTER ABKHASIAN CHE
  make_pair(0x4bf, 0x4be), // CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
  make_pair(0x4c2, 0x4c1), // CYRILLIC SMALL LETTER ZHE WITH BREVE
  make_pair(0x4c4, 0x4c3), // CYRILLIC SMALL LETTER KA WITH HOOK
  make_pair(0x4c6, 0x4c5), // CYRILLIC SMALL LETTER EL WITH TAIL
  make_pair(0x4c8, 0x4c7), // CYRILLIC SMALL LETTER EN WITH HOOK
  make_pair(0x4ca, 0x4c9), // CYRILLIC SMALL LETTER EN WITH TAIL
  make_pair(0x4cc, 0x4cb), // CYRILLIC SMALL LETTER KHAKASSIAN CHE
  make_pair(0x4ce, 0x4cd), // CYRILLIC SMALL LETTER EM WITH TAIL
  make_pair(0x4cf, 0x4c0), // CYRILLIC SMALL LETTER PALOCHKA
  make_pair(0x4d1, 0x4d0), // CYRILLIC SMALL LETTER A WITH BREVE
  make_pair(0x4d3, 0x4d2), // CYRILLIC SMALL LETTER A WITH DIAERESIS
  make_pair(0x4d5, 0x4d4), // CYRILLIC SMALL LIGATURE A IE
  make_pair(0x4d7, 0x4d6), // CYRILLIC SMALL LETTER IE WITH BREVE
  make_pair(0x4d9, 0x4d8), // CYRILLIC SMALL LETTER SCHWA
  make_pair(0x4db, 0x4da), // CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
  make_pair(0x4dd, 0x4dc), // CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
  make_pair(0x4df, 0x4de), // CYRILLIC SMALL LETTER ZE WITH DIAERESIS
  make_pair(0x4e1, 0x4e0), // CYRILLIC SMALL LETTER ABKHASIAN DZE
  make_pair(0x4e3, 0x4e2), // CYRILLIC SMALL LETTER I WITH MACRON
  make_pair(0x4e5, 0x4e4), // CYRILLIC SMALL LETTER I WITH DIAERESIS
  make_pair(0x4e7, 0x4e6), // CYRILLIC SMALL LETTER O WITH DIAERESIS
  make_pair(0x4e9, 0x4e8), // CYRILLIC SMALL LETTER BARRED O
  make_pair(0x4eb, 0x4ea), // CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
  make_pair(0x4ed, 0x4ec), // CYRILLIC SMALL LETTER E WITH DIAERESIS
  make_pair(0x4ef, 0x4ee), // CYRILLIC SMALL LETTER U WITH MACRON
  make_pair(0x4f1, 0x4f0), // CYRILLIC SMALL LETTER U WITH DIAERESIS
  make_pair(0x4f3, 0x4f2), // CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
  make_pair(0x4f5, 0x4f4), // CYRILLIC SMALL LETTER CHE WITH DIAERESIS
  make_pair(0x4f7, 0x4f6), // CYRILLIC SMALL LETTER GHE WITH DESCENDER
  make_pair(0x4f9, 0x4f8), // CYRILLIC SMALL LETTER YERU WITH DIAERESIS
  make_pair(0x4fb, 0x4fa), // CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
  make_pair(0x4fd, 0x4fc), // CYRILLIC SMALL LETTER HA WITH HOOK
  make_pair(0x4ff, 0x4fe), // CYRILLIC SMALL LETTER HA WITH STROKE
  make_pair(0x501, 0x500), // CYRILLIC SMALL LETTER KOMI DE
  make_pair(0x503, 0x502), // CYRILLIC SMALL LETTER KOMI DJE
  make_pair(0x505, 0x504), // CYRILLIC SMALL LETTER KOMI ZJE
  make_pair(0x507, 0x506), // CYRILLIC SMALL LETTER KOMI DZJE
  make_pair(0x509, 0x508), // CYRILLIC SMALL LETTER KOMI LJE
  make_pair(0x50b, 0x50a), // CYRILLIC SMALL LETTER KOMI NJE
  make_pair(0x50d, 0x50c), // CYRILLIC SMALL LETTER KOMI SJE
  make_pair(0x50f, 0x50e), // CYRILLIC SMALL LETTER KOMI TJE
  make_pair(0x511, 0x510), // CYRILLIC SMALL LETTER REVERSED ZE
  make_pair(0x513, 0x512), // CYRILLIC SMALL LETTER EL WITH HOOK
  make_pair(0x515, 0x514), // CYRILLIC SMALL LETTER LHA
  make_pair(0x517, 0x516), // CYRILLIC SMALL LETTER RHA
  make_pair(0x519, 0x518), // CYRILLIC SMALL LETTER YAE
  make_pair(0x51b, 0x51a), // CYRILLIC SMALL LETTER QA
  make_pair(0x51d, 0x51c), // CYRILLIC SMALL LETTER WE
  make_pair(0x51f, 0x51e), // CYRILLIC SMALL LETTER ALEUT KA
  make_pair(0x521, 0x520), // CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK
  make_pair(0x523, 0x522), // CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK
  make_pair(0x525, 0x524), // CYRILLIC SMALL LETTER PE WITH DESCENDER
  make_pair(0x527, 0x526), // CYRILLIC SMALL LETTER SHHA WITH DESCENDER
  make_pair(0x561, 0x531), // ARMENIAN SMALL LETTER AYB
  make_pair(0x562, 0x532), // ARMENIAN SMALL LETTER BEN
  make_pair(0x563, 0x533), // ARMENIAN SMALL LETTER GIM
  make_pair(0x564, 0x534), // ARMENIAN SMALL LETTER DA
  make_pair(0x565, 0x535), // ARMENIAN SMALL LETTER ECH
  make_pair(0x566, 0x536), // ARMENIAN SMALL LETTER ZA
  make_pair(0x567, 0x537), // ARMENIAN SMALL LETTER EH
  make_pair(0x568, 0x538), // ARMENIAN SMALL LETTER ET
  make_pair(0x569, 0x539), // ARMENIAN SMALL LETTER TO
  make_pair(0x56a, 0x53a), // ARMENIAN SMALL LETTER ZHE
  make_pair(0x56b, 0x53b), // ARMENIAN SMALL LETTER INI
  make_pair(0x56c, 0x53c), // ARMENIAN SMALL LETTER LIWN
  make_pair(0x56d, 0x53d), // ARMENIAN SMALL LETTER XEH
  make_pair(0x56e, 0x53e), // ARMENIAN SMALL LETTER CA
  make_pair(0x56f, 0x53f), // ARMENIAN SMALL LETTER KEN
  make_pair(0x570, 0x540), // ARMENIAN SMALL LETTER HO
  make_pair(0x571, 0x541), // ARMENIAN SMALL LETTER JA
  make_pair(0x572, 0x542), // ARMENIAN SMALL LETTER GHAD
  make_pair(0x573, 0x543), // ARMENIAN SMALL LETTER CHEH
  make_pair(0x574, 0x544), // ARMENIAN SMALL LETTER MEN
  make_pair(0x575, 0x545), // ARMENIAN SMALL LETTER YI
  make_pair(0x576, 0x546), // ARMENIAN SMALL LETTER NOW
  make_pair(0x577, 0x547), // ARMENIAN SMALL LETTER SHA
  make_pair(0x578, 0x548), // ARMENIAN SMALL LETTER VO
  make_pair(0x579, 0x549), // ARMENIAN SMALL LETTER CHA
  make_pair(0x57a, 0x54a), // ARMENIAN SMALL LETTER PEH
  make_pair(0x57b, 0x54b), // ARMENIAN SMALL LETTER JHEH
  make_pair(0x57c, 0x54c), // ARMENIAN SMALL LETTER RA
  make_pair(0x57d, 0x54d), // ARMENIAN SMALL LETTER SEH
  make_pair(0x57e, 0x54e), // ARMENIAN SMALL LETTER VEW
  make_pair(0x57f, 0x54f), // ARMENIAN SMALL LETTER TIWN
  make_pair(0x580, 0x550), // ARMENIAN SMALL LETTER REH
  make_pair(0x581, 0x551), // ARMENIAN SMALL LETTER CO
  make_pair(0x582, 0x552), // ARMENIAN SMALL LETTER YIWN
  make_pair(0x583, 0x553), // ARMENIAN SMALL LETTER PIWR
  make_pair(0x584, 0x554), // ARMENIAN SMALL LETTER KEH
  make_pair(0x585, 0x555), // ARMENIAN SMALL LETTER OH
  make_pair(0x586, 0x556), // ARMENIAN SMALL LETTER FEH
  make_pair(0x1d79, 0xa77d), // LATIN SMALL LETTER INSULAR G
  make_pair(0x1d7d, 0x2c63), // LATIN SMALL LETTER P WITH STROKE
  make_pair(0x1e01, 0x1e00), // LATIN SMALL LETTER A WITH RING BELOW
  make_pair(0x1e03, 0x1e02), // LATIN SMALL LETTER B WITH DOT ABOVE
  make_pair(0x1e05, 0x1e04), // LATIN SMALL LETTER B WITH DOT BELOW
  make_pair(0x1e07, 0x1e06), // LATIN SMALL LETTER B WITH LINE BELOW
  make_pair(0x1e09, 0x1e08), // LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
  make_pair(0x1e0b, 0x1e0a), // LATIN SMALL LETTER D WITH DOT ABOVE
  make_pair(0x1e0d, 0x1e0c), // LATIN SMALL LETTER D WITH DOT BELOW
  make_pair(0x1e0f, 0x1e0e), // LATIN SMALL LETTER D WITH LINE BELOW
  make_pair(0x1e11, 0x1e10), // LATIN SMALL LETTER D WITH CEDILLA
  make_pair(0x1e13, 0x1e12), // LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
  make_pair(0x1e15, 0x1e14), // LATIN SMALL LETTER E WITH MACRON AND GRAVE
  make_pair(0x1e17, 0x1e16), // LATIN SMALL LETTER E WITH MACRON AND ACUTE
  make_pair(0x1e19, 0x1e18), // LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
  make_pair(0x1e1b, 0x1e1a), // LATIN SMALL LETTER E WITH TILDE BELOW
  make_pair(0x1e1d, 0x1e1c), // LATIN SMALL LETTER E WITH CEDILLA AND BREVE
  make_pair(0x1e1f, 0x1e1e), // LATIN SMALL LETTER F WITH DOT ABOVE
  make_pair(0x1e21, 0x1e20), // LATIN SMALL LETTER G WITH MACRON
  make_pair(0x1e23, 0x1e22), // LATIN SMALL LETTER H WITH DOT ABOVE
  make_pair(0x1e25, 0x1e24), // LATIN SMALL LETTER H WITH DOT BELOW
  make_pair(0x1e27, 0x1e26), // LATIN SMALL LETTER H WITH DIAERESIS
  make_pair(0x1e29, 0x1e28), // LATIN SMALL LETTER H WITH CEDILLA
  make_pair(0x1e2b, 0x1e2a), // LATIN SMALL LETTER H WITH BREVE BELOW
  make_pair(0x1e2d, 0x1e2c), // LATIN SMALL LETTER I WITH TILDE BELOW
  make_pair(0x1e2f, 0x1e2e), // LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
  make_pair(0x1e31, 0x1e30), // LATIN SMALL LETTER K WITH ACUTE
  make_pair(0x1e33, 0x1e32), // LATIN SMALL LETTER K WITH DOT BELOW
  make_pair(0x1e35, 0x1e34), // LATIN SMALL LETTER K WITH LINE BELOW
  make_pair(0x1e37, 0x1e36), // LATIN SMALL LETTER L WITH DOT BELOW
  make_pair(0x1e39, 0x1e38), // LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
  make_pair(0x1e3b, 0x1e3a), // LATIN SMALL LETTER L WITH LINE BELOW
  make_pair(0x1e3d, 0x1e3c), // LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
  make_pair(0x1e3f, 0x1e3e), // LATIN SMALL LETTER M WITH ACUTE
  make_pair(0x1e41, 0x1e40), // LATIN SMALL LETTER M WITH DOT ABOVE
  make_pair(0x1e43, 0x1e42), // LATIN SMALL LETTER M WITH DOT BELOW
  make_pair(0x1e45, 0x1e44), // LATIN SMALL LETTER N WITH DOT ABOVE
  make_pair(0x1e47, 0x1e46), // LATIN SMALL LETTER N WITH DOT BELOW
  make_pair(0x1e49, 0x1e48), // LATIN SMALL LETTER N WITH LINE BELOW
  make_pair(0x1e4b, 0x1e4a), // LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
  make_pair(0x1e4d, 0x1e4c), // LATIN SMALL LETTER O WITH TILDE AND ACUTE
  make_pair(0x1e4f, 0x1e4e), // LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
  make_pair(0x1e51, 0x1e50), // LATIN SMALL LETTER O WITH MACRON AND GRAVE
  make_pair(0x1e53, 0x1e52), // LATIN SMALL LETTER O WITH MACRON AND ACUTE
  make_pair(0x1e55, 0x1e54), // LATIN SMALL LETTER P WITH ACUTE
  make_pair(0x1e57, 0x1e56), // LATIN SMALL LETTER P WITH DOT ABOVE
  make_pair(0x1e59, 0x1e58), // LATIN SMALL LETTER R WITH DOT ABOVE
  make_pair(0x1e5b, 0x1e5a), // LATIN SMALL LETTER R WITH DOT BELOW
  make_pair(0x1e5d, 0x1e5c), // LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
  make_pair(0x1e5f, 0x1e5e), // LATIN SMALL LETTER R WITH LINE BELOW
  make_pair(0x1e61, 0x1e60), // LATIN SMALL LETTER S WITH DOT ABOVE
  make_pair(0x1e63, 0x1e62), // LATIN SMALL LETTER S WITH DOT BELOW
  make_pair(0x1e65, 0x1e64), // LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
  make_pair(0x1e67, 0x1e66), // LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
  make_pair(0x1e69, 0x1e68), // LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
  make_pair(0x1e6b, 0x1e6a), // LATIN SMALL LETTER T WITH DOT ABOVE
  make_pair(0x1e6d, 0x1e6c), // LATIN SMALL LETTER T WITH DOT BELOW
  make_pair(0x1e6f, 0x1e6e), // LATIN SMALL LETTER T WITH LINE BELOW
  make_pair(0x1e71, 0x1e70), // LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
  make_pair(0x1e73, 0x1e72), // LATIN SMALL LETTER U WITH DIAERESIS BELOW
  make_pair(0x1e75, 0x1e74), // LATIN SMALL LETTER U WITH TILDE BELOW
  make_pair(0x1e77, 0x1e76), // LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
  make_pair(0x1e79, 0x1e78), // LATIN SMALL LETTER U WITH TILDE AND ACUTE
  make_pair(0x1e7b, 0x1e7a), // LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
  make_pair(0x1e7d, 0x1e7c), // LATIN SMALL LETTER V WITH TILDE
  make_pair(0x1e7f, 0x1e7e), // LATIN SMALL LETTER V WITH DOT BELOW
  make_pair(0x1e81, 0x1e80), // LATIN SMALL LETTER W WITH GRAVE
  make_pair(0x1e83, 0x1e82), // LATIN SMALL LETTER W WITH ACUTE
  make_pair(0x1e85, 0x1e84), // LATIN SMALL LETTER W WITH DIAERESIS
  make_pair(0x1e87, 0x1e86), // LATIN SMALL LETTER W WITH DOT ABOVE
  make_pair(0x1e89, 0x1e88), // LATIN SMALL LETTER W WITH DOT BELOW
  make_pair(0x1e8b, 0x1e8a), // LATIN SMALL LETTER X WITH DOT ABOVE
  make_pair(0x1e8d, 0x1e8c), // LATIN SMALL LETTER X WITH DIAERESIS
  make_pair(0x1e8f, 0x1e8e), // LATIN SMALL LETTER Y WITH DOT ABOVE
  make_pair(0x1e91, 0x1e90), // LATIN SMALL LETTER Z WITH CIRCUMFLEX
  make_pair(0x1e93, 0x1e92), // LATIN SMALL LETTER Z WITH DOT BELOW
  make_pair(0x1e95, 0x1e94), // LATIN SMALL LETTER Z WITH LINE BELOW
  make_pair(0x1e9b, 0x1e60), // LATIN SMALL LETTER LONG S WITH DOT ABOVE
  make_pair(0x1ea1, 0x1ea0), // LATIN SMALL LETTER A WITH DOT BELOW
  make_pair(0x1ea3, 0x1ea2), // LATIN SMALL LETTER A WITH HOOK ABOVE
  make_pair(0x1ea5, 0x1ea4), // LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
  make_pair(0x1ea7, 0x1ea6), // LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
  make_pair(0x1ea9, 0x1ea8), // LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
  make_pair(0x1eab, 0x1eaa), // LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
  make_pair(0x1ead, 0x1eac), // LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
  make_pair(0x1eaf, 0x1eae), // LATIN SMALL LETTER A WITH BREVE AND ACUTE
  make_pair(0x1eb1, 0x1eb0), // LATIN SMALL LETTER A WITH BREVE AND GRAVE
  make_pair(0x1eb3, 0x1eb2), // LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
  make_pair(0x1eb5, 0x1eb4), // LATIN SMALL LETTER A WITH BREVE AND TILDE
  make_pair(0x1eb7, 0x1eb6), // LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
  make_pair(0x1eb9, 0x1eb8), // LATIN SMALL LETTER E WITH DOT BELOW
  make_pair(0x1ebb, 0x1eba), // LATIN SMALL LETTER E WITH HOOK ABOVE
  make_pair(0x1ebd, 0x1ebc), // LATIN SMALL LETTER E WITH TILDE
  make_pair(0x1ebf, 0x1ebe), // LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
  make_pair(0x1ec1, 0x1ec0), // LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
  make_pair(0x1ec3, 0x1ec2), // LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
  make_pair(0x1ec5, 0x1ec4), // LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
  make_pair(0x1ec7, 0x1ec6), // LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
  make_pair(0x1ec9, 0x1ec8), // LATIN SMALL LETTER I WITH HOOK ABOVE
  make_pair(0x1ecb, 0x1eca), // LATIN SMALL LETTER I WITH DOT BELOW
  make_pair(0x1ecd, 0x1ecc), // LATIN SMALL LETTER O WITH DOT BELOW
  make_pair(0x1ecf, 0x1ece), // LATIN SMALL LETTER O WITH HOOK ABOVE
  make_pair(0x1ed1, 0x1ed0), // LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
  make_pair(0x1ed3, 0x1ed2), // LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
  make_pair(0x1ed5, 0x1ed4), // LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
  make_pair(0x1ed7, 0x1ed6), // LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
  make_pair(0x1ed9, 0x1ed8), // LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
  make_pair(0x1edb, 0x1eda), // LATIN SMALL LETTER O WITH HORN AND ACUTE
  make_pair(0x1edd, 0x1edc), // LATIN SMALL LETTER O WITH HORN AND GRAVE
  make_pair(0x1edf, 0x1ede), // LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
  make_pair(0x1ee1, 0x1ee0), // LATIN SMALL LETTER O WITH HORN AND TILDE
  make_pair(0x1ee3, 0x1ee2), // LATIN SMALL LETTER O WITH HORN AND DOT BELOW
  make_pair(0x1ee5, 0x1ee4), // LATIN SMALL LETTER U WITH DOT BELOW
  make_pair(0x1ee7, 0x1ee6), // LATIN SMALL LETTER U WITH HOOK ABOVE
  make_pair(0x1ee9, 0x1ee8), // LATIN SMALL LETTER U WITH HORN AND ACUTE
  make_pair(0x1eeb, 0x1eea), // LATIN SMALL LETTER U WITH HORN AND GRAVE
  make_pair(0x1eed, 0x1eec), // LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
  make_pair(0x1eef, 0x1eee), // LATIN SMALL LETTER U WITH HORN AND TILDE
  make_pair(0x1ef1, 0x1ef0), // LATIN SMALL LETTER U WITH HORN AND DOT BELOW
  make_pair(0x1ef3, 0x1ef2), // LATIN SMALL LETTER Y WITH GRAVE
  make_pair(0x1ef5, 0x1ef4), // LATIN SMALL LETTER Y WITH DOT BELOW
  make_pair(0x1ef7, 0x1ef6), // LATIN SMALL LETTER Y WITH HOOK ABOVE
  make_pair(0x1ef9, 0x1ef8), // LATIN SMALL LETTER Y WITH TILDE
  make_pair(0x1efb, 0x1efa), // LATIN SMALL LETTER MIDDLE-WELSH LL
  make_pair(0x1efd, 0x1efc), // LATIN SMALL LETTER MIDDLE-WELSH V
  make_pair(0x1eff, 0x1efe), // LATIN SMALL LETTER Y WITH LOOP
  make_pair(0x1f00, 0x1f08), // GREEK SMALL LETTER ALPHA WITH PSILI
  make_pair(0x1f01, 0x1f09), // GREEK SMALL LETTER ALPHA WITH DASIA
  make_pair(0x1f02, 0x1f0a), // GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
  make_pair(0x1f03, 0x1f0b), // GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
  make_pair(0x1f04, 0x1f0c), // GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
  make_pair(0x1f05, 0x1f0d), // GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
  make_pair(0x1f06, 0x1f0e), // GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
  make_pair(0x1f07, 0x1f0f), // GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
  make_pair(0x1f10, 0x1f18), // GREEK SMALL LETTER EPSILON WITH PSILI
  make_pair(0x1f11, 0x1f19), // GREEK SMALL LETTER EPSILON WITH DASIA
  make_pair(0x1f12, 0x1f1a), // GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
  make_pair(0x1f13, 0x1f1b), // GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
  make_pair(0x1f14, 0x1f1c), // GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
  make_pair(0x1f15, 0x1f1d), // GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
  make_pair(0x1f20, 0x1f28), // GREEK SMALL LETTER ETA WITH PSILI
  make_pair(0x1f21, 0x1f29), // GREEK SMALL LETTER ETA WITH DASIA
  make_pair(0x1f22, 0x1f2a), // GREEK SMALL LETTER ETA WITH PSILI AND VARIA
  make_pair(0x1f23, 0x1f2b), // GREEK SMALL LETTER ETA WITH DASIA AND VARIA
  make_pair(0x1f24, 0x1f2c), // GREEK SMALL LETTER ETA WITH PSILI AND OXIA
  make_pair(0x1f25, 0x1f2d), // GREEK SMALL LETTER ETA WITH DASIA AND OXIA
  make_pair(0x1f26, 0x1f2e), // GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
  make_pair(0x1f27, 0x1f2f), // GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
  make_pair(0x1f30, 0x1f38), // GREEK SMALL LETTER IOTA WITH PSILI
  make_pair(0x1f31, 0x1f39), // GREEK SMALL LETTER IOTA WITH DASIA
  make_pair(0x1f32, 0x1f3a), // GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
  make_pair(0x1f33, 0x1f3b), // GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
  make_pair(0x1f34, 0x1f3c), // GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
  make_pair(0x1f35, 0x1f3d), // GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
  make_pair(0x1f36, 0x1f3e), // GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
  make_pair(0x1f37, 0x1f3f), // GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
  make_pair(0x1f40, 0x1f48), // GREEK SMALL LETTER OMICRON WITH PSILI
  make_pair(0x1f41, 0x1f49), // GREEK SMALL LETTER OMICRON WITH DASIA
  make_pair(0x1f42, 0x1f4a), // GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
  make_pair(0x1f43, 0x1f4b), // GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
  make_pair(0x1f44, 0x1f4c), // GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
  make_pair(0x1f45, 0x1f4d), // GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
  make_pair(0x1f51, 0x1f59), // GREEK SMALL LETTER UPSILON WITH DASIA
  make_pair(0x1f53, 0x1f5b), // GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
  make_pair(0x1f55, 0x1f5d), // GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
  make_pair(0x1f57, 0x1f5f), // GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
  make_pair(0x1f60, 0x1f68), // GREEK SMALL LETTER OMEGA WITH PSILI
  make_pair(0x1f61, 0x1f69), // GREEK SMALL LETTER OMEGA WITH DASIA
  make_pair(0x1f62, 0x1f6a), // GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
  make_pair(0x1f63, 0x1f6b), // GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
  make_pair(0x1f64, 0x1f6c), // GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
  make_pair(0x1f65, 0x1f6d), // GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
  make_pair(0x1f66, 0x1f6e), // GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
  make_pair(0x1f67, 0x1f6f), // GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
  make_pair(0x1f70, 0x1fba), // GREEK SMALL LETTER ALPHA WITH VARIA
  make_pair(0x1f71, 0x1fbb), // GREEK SMALL LETTER ALPHA WITH OXIA
  make_pair(0x1f72, 0x1fc8), // GREEK SMALL LETTER EPSILON WITH VARIA
  make_pair(0x1f73, 0x1fc9), // GREEK SMALL LETTER EPSILON WITH OXIA
  make_pair(0x1f74, 0x1fca), // GREEK SMALL LETTER ETA WITH VARIA
  make_pair(0x1f75, 0x1fcb), // GREEK SMALL LETTER ETA WITH OXIA
  make_pair(0x1f76, 0x1fda), // GREEK SMALL LETTER IOTA WITH VARIA
  make_pair(0x1f77, 0x1fdb), // GREEK SMALL LETTER IOTA WITH OXIA
  make_pair(0x1f78, 0x1ff8), // GREEK SMALL LETTER OMICRON WITH VARIA
  make_pair(0x1f79, 0x1ff9), // GREEK SMALL LETTER OMICRON WITH OXIA
  make_pair(0x1f7a, 0x1fea), // GREEK SMALL LETTER UPSILON WITH VARIA
  make_pair(0x1f7b, 0x1feb), // GREEK SMALL LETTER UPSILON WITH OXIA
  make_pair(0x1f7c, 0x1ffa), // GREEK SMALL LETTER OMEGA WITH VARIA
  make_pair(0x1f7d, 0x1ffb), // GREEK SMALL LETTER OMEGA WITH OXIA
  make_pair(0x1f80, 0x1f88), // GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
  make_pair(0x1f81, 0x1f89), // GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
  make_pair(0x1f82, 0x1f8a), // GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
  make_pair(0x1f83, 0x1f8b), // GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
  make_pair(0x1f84, 0x1f8c), // GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
  make_pair(0x1f85, 0x1f8d), // GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
  make_pair(0x1f86, 0x1f8e), // GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
  make_pair(0x1f87, 0x1f8f), // GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
  make_pair(0x1f90, 0x1f98), // GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
  make_pair(0x1f91, 0x1f99), // GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
  make_pair(0x1f92, 0x1f9a), // GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
  make_pair(0x1f93, 0x1f9b), // GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
  make_pair(0x1f94, 0x1f9c), // GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
  make_pair(0x1f95, 0x1f9d), // GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
  make_pair(0x1f96, 0x1f9e), // GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
  make_pair(0x1f97, 0x1f9f), // GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
  make_pair(0x1fa0, 0x1fa8), // GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
  make_pair(0x1fa1, 0x1fa9), // GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
  make_pair(0x1fa2, 0x1faa), // GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
  make_pair(0x1fa3, 0x1fab), // GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
  make_pair(0x1fa4, 0x1fac), // GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
  make_pair(0x1fa5, 0x1fad), // GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
  make_pair(0x1fa6, 0x1fae), // GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
  make_pair(0x1fa7, 0x1faf), // GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
  make_pair(0x1fb0, 0x1fb8), // GREEK SMALL LETTER ALPHA WITH VRACHY
  make_pair(0x1fb1, 0x1fb9), // GREEK SMALL LETTER ALPHA WITH MACRON
  make_pair(0x1fb3, 0x1fbc), // GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
  make_pair(0x1fbe, 0x399), // GREEK PROSGEGRAMMENI
  make_pair(0x1fc3, 0x1fcc), // GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
  make_pair(0x1fd0, 0x1fd8), // GREEK SMALL LETTER IOTA WITH VRACHY
  make_pair(0x1fd1, 0x1fd9), // GREEK SMALL LETTER IOTA WITH MACRON
  make_pair(0x1fe0, 0x1fe8), // GREEK SMALL LETTER UPSILON WITH VRACHY
  make_pair(0x1fe1, 0x1fe9), // GREEK SMALL LETTER UPSILON WITH MACRON
  make_pair(0x1fe5, 0x1fec), // GREEK SMALL LETTER RHO WITH DASIA
  make_pair(0x1ff3, 0x1ffc), // GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
  make_pair(0x214e, 0x2132), // TURNED SMALL F
  make_pair(0x2170, 0x2160), // SMALL ROMAN NUMERAL ONE
  make_pair(0x2171, 0x2161), // SMALL ROMAN NUMERAL TWO
  make_pair(0x2172, 0x2162), // SMALL ROMAN NUMERAL THREE
  make_pair(0x2173, 0x2163), // SMALL ROMAN NUMERAL FOUR
  make_pair(0x2174, 0x2164), // SMALL ROMAN NUMERAL FIVE
  make_pair(0x2175, 0x2165), // SMALL ROMAN NUMERAL SIX
  make_pair(0x2176, 0x2166), // SMALL ROMAN NUMERAL SEVEN
  make_pair(0x2177, 0x2167), // SMALL ROMAN NUMERAL EIGHT
  make_pair(0x2178, 0x2168), // SMALL ROMAN NUMERAL NINE
  make_pair(0x2179, 0x2169), // SMALL ROMAN NUMERAL TEN
  make_pair(0x217a, 0x216a), // SMALL ROMAN NUMERAL ELEVEN
  make_pair(0x217b, 0x216b), // SMALL ROMAN NUMERAL TWELVE
  make_pair(0x217c, 0x216c), // SMALL ROMAN NUMERAL FIFTY
  make_pair(0x217d, 0x216d), // SMALL ROMAN NUMERAL ONE HUNDRED
  make_pair(0x217e, 0x216e), // SMALL ROMAN NUMERAL FIVE HUNDRED
  make_pair(0x217f, 0x216f), // SMALL ROMAN NUMERAL ONE THOUSAND
  make_pair(0x2184, 0x2183), // LATIN SMALL LETTER REVERSED C
  make_pair(0x24d0, 0x24b6), // CIRCLED LATIN SMALL LETTER A
  make_pair(0x24d1, 0x24b7), // CIRCLED LATIN SMALL LETTER B
  make_pair(0x24d2, 0x24b8), // CIRCLED LATIN SMALL LETTER C
  make_pair(0x24d3, 0x24b9), // CIRCLED LATIN SMALL LETTER D
  make_pair(0x24d4, 0x24ba), // CIRCLED LATIN SMALL LETTER E
  make_pair(0x24d5, 0x24bb), // CIRCLED LATIN SMALL LETTER F
  make_pair(0x24d6, 0x24bc), // CIRCLED LATIN SMALL LETTER G
  make_pair(0x24d7, 0x24bd), // CIRCLED LATIN SMALL LETTER H
  make_pair(0x24d8, 0x24be), // CIRCLED LATIN SMALL LETTER I
  make_pair(0x24d9, 0x24bf), // CIRCLED LATIN SMALL LETTER J
  make_pair(0x24da, 0x24c0), // CIRCLED LATIN SMALL LETTER K
  make_pair(0x24db, 0x24c1), // CIRCLED LATIN SMALL LETTER L
  make_pair(0x24dc, 0x24c2), // CIRCLED LATIN SMALL LETTER M
  make_pair(0x24dd, 0x24c3), // CIRCLED LATIN SMALL LETTER N
  make_pair(0x24de, 0x24c4), // CIRCLED LATIN SMALL LETTER O
  make_pair(0x24df, 0x24c5), // CIRCLED LATIN SMALL LETTER P
  make_pair(0x24e0, 0x24c6), // CIRCLED LATIN SMALL LETTER Q
  make_pair(0x24e1, 0x24c7), // CIRCLED LATIN SMALL LETTER R
  make_pair(0x24e2, 0x24c8), // CIRCLED LATIN SMALL LETTER S
  make_pair(0x24e3, 0x24c9), // CIRCLED LATIN SMALL LETTER T
  make_pair(0x24e4, 0x24ca), // CIRCLED LATIN SMALL LETTER U
  make_pair(0x24e5, 0x24cb), // CIRCLED LATIN SMALL LETTER V
  make_pair(0x24e6, 0x24cc), // CIRCLED LATIN SMALL LETTER W
  make_pair(0x24e7, 0x24cd), // CIRCLED LATIN SMALL LETTER X
  make_pair(0x24e8, 0x24ce), // CIRCLED LATIN SMALL LETTER Y
  make_pair(0x24e9, 0x24cf), // CIRCLED LATIN SMALL LETTER Z
  make_pair(0x2c30, 0x2c00), // GLAGOLITIC SMALL LETTER AZU
  make_pair(0x2c31, 0x2c01), // GLAGOLITIC SMALL LETTER BUKY
  make_pair(0x2c32, 0x2c02), // GLAGOLITIC SMALL LETTER VEDE
  make_pair(0x2c33, 0x2c03), // GLAGOLITIC SMALL LETTER GLAGOLI
  make_pair(0x2c34, 0x2c04), // GLAGOLITIC SMALL LETTER DOBRO
  make_pair(0x2c35, 0x2c05), // GLAGOLITIC SMALL LETTER YESTU
  make_pair(0x2c36, 0x2c06), // GLAGOLITIC SMALL LETTER ZHIVETE
  make_pair(0x2c37, 0x2c07), // GLAGOLITIC SMALL LETTER DZELO
  make_pair(0x2c38, 0x2c08), // GLAGOLITIC SMALL LETTER ZEMLJA
  make_pair(0x2c39, 0x2c09), // GLAGOLITIC SMALL LETTER IZHE
  make_pair(0x2c3a, 0x2c0a), // GLAGOLITIC SMALL LETTER INITIAL IZHE
  make_pair(0x2c3b, 0x2c0b), // GLAGOLITIC SMALL LETTER I
  make_pair(0x2c3c, 0x2c0c), // GLAGOLITIC SMALL LETTER DJERVI
  make_pair(0x2c3d, 0x2c0d), // GLAGOLITIC SMALL LETTER KAKO
  make_pair(0x2c3e, 0x2c0e), // GLAGOLITIC SMALL LETTER LJUDIJE
  make_pair(0x2c3f, 0x2c0f), // GLAGOLITIC SMALL LETTER MYSLITE
  make_pair(0x2c40, 0x2c10), // GLAGOLITIC SMALL LETTER NASHI
  make_pair(0x2c41, 0x2c11), // GLAGOLITIC SMALL LETTER ONU
  make_pair(0x2c42, 0x2c12), // GLAGOLITIC SMALL LETTER POKOJI
  make_pair(0x2c43, 0x2c13), // GLAGOLITIC SMALL LETTER RITSI
  make_pair(0x2c44, 0x2c14), // GLAGOLITIC SMALL LETTER SLOVO
  make_pair(0x2c45, 0x2c15), // GLAGOLITIC SMALL LETTER TVRIDO
  make_pair(0x2c46, 0x2c16), // GLAGOLITIC SMALL LETTER UKU
  make_pair(0x2c47, 0x2c17), // GLAGOLITIC SMALL LETTER FRITU
  make_pair(0x2c48, 0x2c18), // GLAGOLITIC SMALL LETTER HERU
  make_pair(0x2c49, 0x2c19), // GLAGOLITIC SMALL LETTER OTU
  make_pair(0x2c4a, 0x2c1a), // GLAGOLITIC SMALL LETTER PE
  make_pair(0x2c4b, 0x2c1b), // GLAGOLITIC SMALL LETTER SHTA
  make_pair(0x2c4c, 0x2c1c), // GLAGOLITIC SMALL LETTER TSI
  make_pair(0x2c4d, 0x2c1d), // GLAGOLITIC SMALL LETTER CHRIVI
  make_pair(0x2c4e, 0x2c1e), // GLAGOLITIC SMALL LETTER SHA
  make_pair(0x2c4f, 0x2c1f), // GLAGOLITIC SMALL LETTER YERU
  make_pair(0x2c50, 0x2c20), // GLAGOLITIC SMALL LETTER YERI
  make_pair(0x2c51, 0x2c21), // GLAGOLITIC SMALL LETTER YATI
  make_pair(0x2c52, 0x2c22), // GLAGOLITIC SMALL LETTER SPIDERY HA
  make_pair(0x2c53, 0x2c23), // GLAGOLITIC SMALL LETTER YU
  make_pair(0x2c54, 0x2c24), // GLAGOLITIC SMALL LETTER SMALL YUS
  make_pair(0x2c55, 0x2c25), // GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL
  make_pair(0x2c56, 0x2c26), // GLAGOLITIC SMALL LETTER YO
  make_pair(0x2c57, 0x2c27), // GLAGOLITIC SMALL LETTER IOTATED SMALL YUS
  make_pair(0x2c58, 0x2c28), // GLAGOLITIC SMALL LETTER BIG YUS
  make_pair(0x2c59, 0x2c29), // GLAGOLITIC SMALL LETTER IOTATED BIG YUS
  make_pair(0x2c5a, 0x2c2a), // GLAGOLITIC SMALL LETTER FITA
  make_pair(0x2c5b, 0x2c2b), // GLAGOLITIC SMALL LETTER IZHITSA
  make_pair(0x2c5c, 0x2c2c), // GLAGOLITIC SMALL LETTER SHTAPIC
  make_pair(0x2c5d, 0x2c2d), // GLAGOLITIC SMALL LETTER TROKUTASTI A
  make_pair(0x2c5e, 0x2c2e), // GLAGOLITIC SMALL LETTER LATINATE MYSLITE
  make_pair(0x2c61, 0x2c60), // LATIN SMALL LETTER L WITH DOUBLE BAR
  make_pair(0x2c65, 0x23a), // LATIN SMALL LETTER A WITH STROKE
  make_pair(0x2c66, 0x23e), // LATIN SMALL LETTER T WITH DIAGONAL STROKE
  make_pair(0x2c68, 0x2c67), // LATIN SMALL LETTER H WITH DESCENDER
  make_pair(0x2c6a, 0x2c69), // LATIN SMALL LETTER K WITH DESCENDER
  make_pair(0x2c6c, 0x2c6b), // LATIN SMALL LETTER Z WITH DESCENDER
  make_pair(0x2c73, 0x2c72), // LATIN SMALL LETTER W WITH HOOK
  make_pair(0x2c76, 0x2c75), // LATIN SMALL LETTER HALF H
  make_pair(0x2c81, 0x2c80), // COPTIC SMALL LETTER ALFA
  make_pair(0x2c83, 0x2c82), // COPTIC SMALL LETTER VIDA
  make_pair(0x2c85, 0x2c84), // COPTIC SMALL LETTER GAMMA
  make_pair(0x2c87, 0x2c86), // COPTIC SMALL LETTER DALDA
  make_pair(0x2c89, 0x2c88), // COPTIC SMALL LETTER EIE
  make_pair(0x2c8b, 0x2c8a), // COPTIC SMALL LETTER SOU
  make_pair(0x2c8d, 0x2c8c), // COPTIC SMALL LETTER ZATA
  make_pair(0x2c8f, 0x2c8e), // COPTIC SMALL LETTER HATE
  make_pair(0x2c91, 0x2c90), // COPTIC SMALL LETTER THETHE
  make_pair(0x2c93, 0x2c92), // COPTIC SMALL LETTER IAUDA
  make_pair(0x2c95, 0x2c94), // COPTIC SMALL LETTER KAPA
  make_pair(0x2c97, 0x2c96), // COPTIC SMALL LETTER LAULA
  make_pair(0x2c99, 0x2c98), // COPTIC SMALL LETTER MI
  make_pair(0x2c9b, 0x2c9a), // COPTIC SMALL LETTER NI
  make_pair(0x2c9d, 0x2c9c), // COPTIC SMALL LETTER KSI
  make_pair(0x2c9f, 0x2c9e), // COPTIC SMALL LETTER O
  make_pair(0x2ca1, 0x2ca0), // COPTIC SMALL LETTER PI
  make_pair(0x2ca3, 0x2ca2), // COPTIC SMALL LETTER RO
  make_pair(0x2ca5, 0x2ca4), // COPTIC SMALL LETTER SIMA
  make_pair(0x2ca7, 0x2ca6), // COPTIC SMALL LETTER TAU
  make_pair(0x2ca9, 0x2ca8), // COPTIC SMALL LETTER UA
  make_pair(0x2cab, 0x2caa), // COPTIC SMALL LETTER FI
  make_pair(0x2cad, 0x2cac), // COPTIC SMALL LETTER KHI
  make_pair(0x2caf, 0x2cae), // COPTIC SMALL LETTER PSI
  make_pair(0x2cb1, 0x2cb0), // COPTIC SMALL LETTER OOU
  make_pair(0x2cb3, 0x2cb2), // COPTIC SMALL LETTER DIALECT-P ALEF
  make_pair(0x2cb5, 0x2cb4), // COPTIC SMALL LETTER OLD COPTIC AIN
  make_pair(0x2cb7, 0x2cb6), // COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
  make_pair(0x2cb9, 0x2cb8), // COPTIC SMALL LETTER DIALECT-P KAPA
  make_pair(0x2cbb, 0x2cba), // COPTIC SMALL LETTER DIALECT-P NI
  make_pair(0x2cbd, 0x2cbc), // COPTIC SMALL LETTER CRYPTOGRAMMIC NI
  make_pair(0x2cbf, 0x2cbe), // COPTIC SMALL LETTER OLD COPTIC OOU
  make_pair(0x2cc1, 0x2cc0), // COPTIC SMALL LETTER SAMPI
  make_pair(0x2cc3, 0x2cc2), // COPTIC SMALL LETTER CROSSED SHEI
  make_pair(0x2cc5, 0x2cc4), // COPTIC SMALL LETTER OLD COPTIC SHEI
  make_pair(0x2cc7, 0x2cc6), // COPTIC SMALL LETTER OLD COPTIC ESH
  make_pair(0x2cc9, 0x2cc8), // COPTIC SMALL LETTER AKHMIMIC KHEI
  make_pair(0x2ccb, 0x2cca), // COPTIC SMALL LETTER DIALECT-P HORI
  make_pair(0x2ccd, 0x2ccc), // COPTIC SMALL LETTER OLD COPTIC HORI
  make_pair(0x2ccf, 0x2cce), // COPTIC SMALL LETTER OLD COPTIC HA
  make_pair(0x2cd1, 0x2cd0), // COPTIC SMALL LETTER L-SHAPED HA
  make_pair(0x2cd3, 0x2cd2), // COPTIC SMALL LETTER OLD COPTIC HEI
  make_pair(0x2cd5, 0x2cd4), // COPTIC SMALL LETTER OLD COPTIC HAT
  make_pair(0x2cd7, 0x2cd6), // COPTIC SMALL LETTER OLD COPTIC GANGIA
  make_pair(0x2cd9, 0x2cd8), // COPTIC SMALL LETTER OLD COPTIC DJA
  make_pair(0x2cdb, 0x2cda), // COPTIC SMALL LETTER OLD COPTIC SHIMA
  make_pair(0x2cdd, 0x2cdc), // COPTIC SMALL LETTER OLD NUBIAN SHIMA
  make_pair(0x2cdf, 0x2cde), // COPTIC SMALL LETTER OLD NUBIAN NGI
  make_pair(0x2ce1, 0x2ce0), // COPTIC SMALL LETTER OLD NUBIAN NYI
  make_pair(0x2ce3, 0x2ce2), // COPTIC SMALL LETTER OLD NUBIAN WAU
  make_pair(0x2cec, 0x2ceb), // COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI
  make_pair(0x2cee, 0x2ced), // COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
  make_pair(0x2cf3, 0x2cf2), // COPTIC SMALL LETTER BOHAIRIC KHEI
  make_pair(0x2d00, 0x10a0), // GEORGIAN SMALL LETTER AN
  make_pair(0x2d01, 0x10a1), // GEORGIAN SMALL LETTER BAN
  make_pair(0x2d02, 0x10a2), // GEORGIAN SMALL LETTER GAN
  make_pair(0x2d03, 0x10a3), // GEORGIAN SMALL LETTER DON
  make_pair(0x2d04, 0x10a4), // GEORGIAN SMALL LETTER EN
  make_pair(0x2d05, 0x10a5), // GEORGIAN SMALL LETTER VIN
  make_pair(0x2d06, 0x10a6), // GEORGIAN SMALL LETTER ZEN
  make_pair(0x2d07, 0x10a7), // GEORGIAN SMALL LETTER TAN
  make_pair(0x2d08, 0x10a8), // GEORGIAN SMALL LETTER IN
  make_pair(0x2d09, 0x10a9), // GEORGIAN SMALL LETTER KAN
  make_pair(0x2d0a, 0x10aa), // GEORGIAN SMALL LETTER LAS
  make_pair(0x2d0b, 0x10ab), // GEORGIAN SMALL LETTER MAN
  make_pair(0x2d0c, 0x10ac), // GEORGIAN SMALL LETTER NAR
  make_pair(0x2d0d, 0x10ad), // GEORGIAN SMALL LETTER ON
  make_pair(0x2d0e, 0x10ae), // GEORGIAN SMALL LETTER PAR
  make_pair(0x2d0f, 0x10af), // GEORGIAN SMALL LETTER ZHAR
  make_pair(0x2d10, 0x10b0), // GEORGIAN SMALL LETTER RAE
  make_pair(0x2d11, 0x10b1), // GEORGIAN SMALL LETTER SAN
  make_pair(0x2d12, 0x10b2), // GEORGIAN SMALL LETTER TAR
  make_pair(0x2d13, 0x10b3), // GEORGIAN SMALL LETTER UN
  make_pair(0x2d14, 0x10b4), // GEORGIAN SMALL LETTER PHAR
  make_pair(0x2d15, 0x10b5), // GEORGIAN SMALL LETTER KHAR
  make_pair(0x2d16, 0x10b6), // GEORGIAN SMALL LETTER GHAN
  make_pair(0x2d17, 0x10b7), // GEORGIAN SMALL LETTER QAR
  make_pair(0x2d18, 0x10b8), // GEORGIAN SMALL LETTER SHIN
  make_pair(0x2d19, 0x10b9), // GEORGIAN SMALL LETTER CHIN
  make_pair(0x2d1a, 0x10ba), // GEORGIAN SMALL LETTER CAN
  make_pair(0x2d1b, 0x10bb), // GEORGIAN SMALL LETTER JIL
  make_pair(0x2d1c, 0x10bc), // GEORGIAN SMALL LETTER CIL
  make_pair(0x2d1d, 0x10bd), // GEORGIAN SMALL LETTER CHAR
  make_pair(0x2d1e, 0x10be), // GEORGIAN SMALL LETTER XAN
  make_pair(0x2d1f, 0x10bf), // GEORGIAN SMALL LETTER JHAN
  make_pair(0x2d20, 0x10c0), // GEORGIAN SMALL LETTER HAE
  make_pair(0x2d21, 0x10c1), // GEORGIAN SMALL LETTER HE
  make_pair(0x2d22, 0x10c2), // GEORGIAN SMALL LETTER HIE
  make_pair(0x2d23, 0x10c3), // GEORGIAN SMALL LETTER WE
  make_pair(0x2d24, 0x10c4), // GEORGIAN SMALL LETTER HAR
  make_pair(0x2d25, 0x10c5), // GEORGIAN SMALL LETTER HOE
  make_pair(0x2d27, 0x10c7), // GEORGIAN SMALL LETTER YN
  make_pair(0x2d2d, 0x10cd), // GEORGIAN SMALL LETTER AEN
  make_pair(0xa641, 0xa640), // CYRILLIC SMALL LETTER ZEMLYA
  make_pair(0xa643, 0xa642), // CYRILLIC SMALL LETTER DZELO
  make_pair(0xa645, 0xa644), // CYRILLIC SMALL LETTER REVERSED DZE
  make_pair(0xa647, 0xa646), // CYRILLIC SMALL LETTER IOTA
  make_pair(0xa649, 0xa648), // CYRILLIC SMALL LETTER DJERV
  make_pair(0xa64b, 0xa64a), // CYRILLIC SMALL LETTER MONOGRAPH UK
  make_pair(0xa64d, 0xa64c), // CYRILLIC SMALL LETTER BROAD OMEGA
  make_pair(0xa64f, 0xa64e), // CYRILLIC SMALL LETTER NEUTRAL YER
  make_pair(0xa651, 0xa650), // CYRILLIC SMALL LETTER YERU WITH BACK YER
  make_pair(0xa653, 0xa652), // CYRILLIC SMALL LETTER IOTIFIED YAT
  make_pair(0xa655, 0xa654), // CYRILLIC SMALL LETTER REVERSED YU
  make_pair(0xa657, 0xa656), // CYRILLIC SMALL LETTER IOTIFIED A
  make_pair(0xa659, 0xa658), // CYRILLIC SMALL LETTER CLOSED LITTLE YUS
  make_pair(0xa65b, 0xa65a), // CYRILLIC SMALL LETTER BLENDED YUS
  make_pair(0xa65d, 0xa65c), // CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS
  make_pair(0xa65f, 0xa65e), // CYRILLIC SMALL LETTER YN
  make_pair(0xa661, 0xa660), // CYRILLIC SMALL LETTER REVERSED TSE
  make_pair(0xa663, 0xa662), // CYRILLIC SMALL LETTER SOFT DE
  make_pair(0xa665, 0xa664), // CYRILLIC SMALL LETTER SOFT EL
  make_pair(0xa667, 0xa666), // CYRILLIC SMALL LETTER SOFT EM
  make_pair(0xa669, 0xa668), // CYRILLIC SMALL LETTER MONOCULAR O
  make_pair(0xa66b, 0xa66a), // CYRILLIC SMALL LETTER BINOCULAR O
  make_pair(0xa66d, 0xa66c), // CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
  make_pair(0xa681, 0xa680), // CYRILLIC SMALL LETTER DWE
  make_pair(0xa683, 0xa682), // CYRILLIC SMALL LETTER DZWE
  make_pair(0xa685, 0xa684), // CYRILLIC SMALL LETTER ZHWE
  make_pair(0xa687, 0xa686), // CYRILLIC SMALL LETTER CCHE
  make_pair(0xa689, 0xa688), // CYRILLIC SMALL LETTER DZZE
  make_pair(0xa68b, 0xa68a), // CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK
  make_pair(0xa68d, 0xa68c), // CYRILLIC SMALL LETTER TWE
  make_pair(0xa68f, 0xa68e), // CYRILLIC SMALL LETTER TSWE
  make_pair(0xa691, 0xa690), // CYRILLIC SMALL LETTER TSSE
  make_pair(0xa693, 0xa692), // CYRILLIC SMALL LETTER TCHE
  make_pair(0xa695, 0xa694), // CYRILLIC SMALL LETTER HWE
  make_pair(0xa697, 0xa696), // CYRILLIC SMALL LETTER SHWE
  make_pair(0xa723, 0xa722), // LATIN SMALL LETTER EGYPTOLOGICAL ALEF
  make_pair(0xa725, 0xa724), // LATIN SMALL LETTER EGYPTOLOGICAL AIN
  make_pair(0xa727, 0xa726), // LATIN SMALL LETTER HENG
  make_pair(0xa729, 0xa728), // LATIN SMALL LETTER TZ
  make_pair(0xa72b, 0xa72a), // LATIN SMALL LETTER TRESILLO
  make_pair(0xa72d, 0xa72c), // LATIN SMALL LETTER CUATRILLO
  make_pair(0xa72f, 0xa72e), // LATIN SMALL LETTER CUATRILLO WITH COMMA
  make_pair(0xa733, 0xa732), // LATIN SMALL LETTER AA
  make_pair(0xa735, 0xa734), // LATIN SMALL LETTER AO
  make_pair(0xa737, 0xa736), // LATIN SMALL LETTER AU
  make_pair(0xa739, 0xa738), // LATIN SMALL LETTER AV
  make_pair(0xa73b, 0xa73a), // LATIN SMALL LETTER AV WITH HORIZONTAL BAR
  make_pair(0xa73d, 0xa73c), // LATIN SMALL LETTER AY
  make_pair(0xa73f, 0xa73e), // LATIN SMALL LETTER REVERSED C WITH DOT
  make_pair(0xa741, 0xa740), // LATIN SMALL LETTER K WITH STROKE
  make_pair(0xa743, 0xa742), // LATIN SMALL LETTER K WITH DIAGONAL STROKE
  make_pair(0xa745, 0xa744), // LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE
  make_pair(0xa747, 0xa746), // LATIN SMALL LETTER BROKEN L
  make_pair(0xa749, 0xa748), // LATIN SMALL LETTER L WITH HIGH STROKE
  make_pair(0xa74b, 0xa74a), // LATIN SMALL LETTER O WITH LONG STROKE OVERLAY
  make_pair(0xa74d, 0xa74c), // LATIN SMALL LETTER O WITH LOOP
  make_pair(0xa74f, 0xa74e), // LATIN SMALL LETTER OO
  make_pair(0xa751, 0xa750), // LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER
  make_pair(0xa753, 0xa752), // LATIN SMALL LETTER P WITH FLOURISH
  make_pair(0xa755, 0xa754), // LATIN SMALL LETTER P WITH SQUIRREL TAIL
  make_pair(0xa757, 0xa756), // LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER
  make_pair(0xa759, 0xa758), // LATIN SMALL LETTER Q WITH DIAGONAL STROKE
  make_pair(0xa75b, 0xa75a), // LATIN SMALL LETTER R ROTUNDA
  make_pair(0xa75d, 0xa75c), // LATIN SMALL LETTER RUM ROTUNDA
  make_pair(0xa75f, 0xa75e), // LATIN SMALL LETTER V WITH DIAGONAL STROKE
  make_pair(0xa761, 0xa760), // LATIN SMALL LETTER VY
  make_pair(0xa763, 0xa762), // LATIN SMALL LETTER VISIGOTHIC Z
  make_pair(0xa765, 0xa764), // LATIN SMALL LETTER THORN WITH STROKE
  make_pair(0xa767, 0xa766), // LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER
  make_pair(0xa769, 0xa768), // LATIN SMALL LETTER VEND
  make_pair(0xa76b, 0xa76a), // LATIN SMALL LETTER ET
  make_pair(0xa76d, 0xa76c), // LATIN SMALL LETTER IS
  make_pair(0xa76f, 0xa76e), // LATIN SMALL LETTER CON
  make_pair(0xa77a, 0xa779), // LATIN SMALL LETTER INSULAR D
  make_pair(0xa77c, 0xa77b), // LATIN SMALL LETTER INSULAR F
  make_pair(0xa77f, 0xa77e), // LATIN SMALL LETTER TURNED INSULAR G
  make_pair(0xa781, 0xa780), // LATIN SMALL LETTER TURNED L
  make_pair(0xa783, 0xa782), // LATIN SMALL LETTER INSULAR R
  make_pair(0xa785, 0xa784), // LATIN SMALL LETTER INSULAR S
  make_pair(0xa787, 0xa786), // LATIN SMALL LETTER INSULAR T
  make_pair(0xa78c, 0xa78b), // LATIN SMALL LETTER SALTILLO
  make_pair(0xa791, 0xa790), // LATIN SMALL LETTER N WITH DESCENDER
  make_pair(0xa793, 0xa792), // LATIN SMALL LETTER C WITH BAR
  make_pair(0xa7a1, 0xa7a0), // LATIN SMALL LETTER G WITH OBLIQUE STROKE
  make_pair(0xa7a3, 0xa7a2), // LATIN SMALL LETTER K WITH OBLIQUE STROKE
  make_pair(0xa7a5, 0xa7a4), // LATIN SMALL LETTER N WITH OBLIQUE STROKE
  make_pair(0xa7a7, 0xa7a6), // LATIN SMALL LETTER R WITH OBLIQUE STROKE
  make_pair(0xa7a9, 0xa7a8), // LATIN SMALL LETTER S WITH OBLIQUE STROKE
  make_pair(0xff41, 0xff21), // FULLWIDTH LATIN SMALL LETTER A
  make_pair(0xff42, 0xff22), // FULLWIDTH LATIN SMALL LETTER B
  make_pair(0xff43, 0xff23), // FULLWIDTH LATIN SMALL LETTER C
  make_pair(0xff44, 0xff24), // FULLWIDTH LATIN SMALL LETTER D
  make_pair(0xff45, 0xff25), // FULLWIDTH LATIN SMALL LETTER E
  make_pair(0xff46, 0xff26), // FULLWIDTH LATIN SMALL LETTER F
  make_pair(0xff47, 0xff27), // FULLWIDTH LATIN SMALL LETTER G
  make_pair(0xff48, 0xff28), // FULLWIDTH LATIN SMALL LETTER H
  make_pair(0xff49, 0xff29), // FULLWIDTH LATIN SMALL LETTER I
  make_pair(0xff4a, 0xff2a), // FULLWIDTH LATIN SMALL LETTER J
  make_pair(0xff4b, 0xff2b), // FULLWIDTH LATIN SMALL LETTER K
  make_pair(0xff4c, 0xff2c), // FULLWIDTH LATIN SMALL LETTER L
  make_pair(0xff4d, 0xff2d), // FULLWIDTH LATIN SMALL LETTER M
  make_pair(0xff4e, 0xff2e), // FULLWIDTH LATIN SMALL LETTER N
  make_pair(0xff4f, 0xff2f), // FULLWIDTH LATIN SMALL LETTER O
  make_pair(0xff50, 0xff30), // FULLWIDTH LATIN SMALL LETTER P
  make_pair(0xff51, 0xff31), // FULLWIDTH LATIN SMALL LETTER Q
  make_pair(0xff52, 0xff32), // FULLWIDTH LATIN SMALL LETTER R
  make_pair(0xff53, 0xff33), // FULLWIDTH LATIN SMALL LETTER S
  make_pair(0xff54, 0xff34), // FULLWIDTH LATIN SMALL LETTER T
  make_pair(0xff55, 0xff35), // FULLWIDTH LATIN SMALL LETTER U
  make_pair(0xff56, 0xff36), // FULLWIDTH LATIN SMALL LETTER V
  make_pair(0xff57, 0xff37), // FULLWIDTH LATIN SMALL LETTER W
  make_pair(0xff58, 0xff38), // FULLWIDTH LATIN SMALL LETTER X
  make_pair(0xff59, 0xff39), // FULLWIDTH LATIN SMALL LETTER Y
  make_pair(0xff5a, 0xff3a), // FULLWIDTH LATIN SMALL LETTER Z
  make_pair(0x10428, 0x10400), // DESERET SMALL LETTER LONG I
  make_pair(0x10429, 0x10401), // DESERET SMALL LETTER LONG E
  make_pair(0x1042a, 0x10402), // DESERET SMALL LETTER LONG A
  make_pair(0x1042b, 0x10403), // DESERET SMALL LETTER LONG AH
  make_pair(0x1042c, 0x10404), // DESERET SMALL LETTER LONG O
  make_pair(0x1042d, 0x10405), // DESERET SMALL LETTER LONG OO
  make_pair(0x1042e, 0x10406), // DESERET SMALL LETTER SHORT I
  make_pair(0x1042f, 0x10407), // DESERET SMALL LETTER SHORT E
  make_pair(0x10430, 0x10408), // DESERET SMALL LETTER SHORT A
  make_pair(0x10431, 0x10409), // DESERET SMALL LETTER SHORT AH
  make_pair(0x10432, 0x1040a), // DESERET SMALL LETTER SHORT O
  make_pair(0x10433, 0x1040b), // DESERET SMALL LETTER SHORT OO
  make_pair(0x10434, 0x1040c), // DESERET SMALL LETTER AY
  make_pair(0x10435, 0x1040d), // DESERET SMALL LETTER OW
  make_pair(0x10436, 0x1040e), // DESERET SMALL LETTER WU
  make_pair(0x10437, 0x1040f), // DESERET SMALL LETTER YEE
  make_pair(0x10438, 0x10410), // DESERET SMALL LETTER H
  make_pair(0x10439, 0x10411), // DESERET SMALL LETTER PEE
  make_pair(0x1043a, 0x10412), // DESERET SMALL LETTER BEE
  make_pair(0x1043b, 0x10413), // DESERET SMALL LETTER TEE
  make_pair(0x1043c, 0x10414), // DESERET SMALL LETTER DEE
  make_pair(0x1043d, 0x10415), // DESERET SMALL LETTER CHEE
  make_pair(0x1043e, 0x10416), // DESERET SMALL LETTER JEE
  make_pair(0x1043f, 0x10417), // DESERET SMALL LETTER KAY
  make_pair(0x10440, 0x10418), // DESERET SMALL LETTER GAY
  make_pair(0x10441, 0x10419), // DESERET SMALL LETTER EF
  make_pair(0x10442, 0x1041a), // DESERET SMALL LETTER VEE
  make_pair(0x10443, 0x1041b), // DESERET SMALL LETTER ETH
  make_pair(0x10444, 0x1041c), // DESERET SMALL LETTER THEE
  make_pair(0x10445, 0x1041d), // DESERET SMALL LETTER ES
  make_pair(0x10446, 0x1041e), // DESERET SMALL LETTER ZEE
  make_pair(0x10447, 0x1041f), // DESERET SMALL LETTER ESH
  make_pair(0x10448, 0x10420), // DESERET SMALL LETTER ZHEE
  make_pair(0x10449, 0x10421), // DESERET SMALL LETTER ER
  make_pair(0x1044a, 0x10422), // DESERET SMALL LETTER EL
  make_pair(0x1044b, 0x10423), // DESERET SMALL LETTER EM
  make_pair(0x1044c, 0x10424), // DESERET SMALL LETTER EN
  make_pair(0x1044d, 0x10425), // DESERET SMALL LETTER ENG
  make_pair(0x1044e, 0x10426), // DESERET SMALL LETTER OI
  make_pair(0x1044f, 0x10427), // DESERET SMALL LETTER EW
  };
  auto itr(lower_bound(begin(mapping), end(mapping), make_pair(cp, uint32_t(0))));
  return (itr != end(mapping) && itr->first == cp)? itr->second: cp;
}

} } // brig::unicode

#endif // BRIG_UNICODE_UPPER_CASE_HPP
